home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / idlelib / ObjectBrowser.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  6KB  |  186 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. from TreeWidget import TreeItem, TreeNode, ScrolledCanvas
  5. from repr import Repr
  6. myrepr = Repr()
  7. myrepr.maxstring = 100
  8. myrepr.maxother = 100
  9.  
  10. class ObjectTreeItem(TreeItem):
  11.     
  12.     def __init__(self, labeltext, object, setfunction = None):
  13.         self.labeltext = labeltext
  14.         self.object = object
  15.         self.setfunction = setfunction
  16.  
  17.     
  18.     def GetLabelText(self):
  19.         return self.labeltext
  20.  
  21.     
  22.     def GetText(self):
  23.         return myrepr.repr(self.object)
  24.  
  25.     
  26.     def GetIconName(self):
  27.         if not self.IsExpandable():
  28.             return 'python'
  29.         
  30.  
  31.     
  32.     def IsEditable(self):
  33.         return self.setfunction is not None
  34.  
  35.     
  36.     def SetText(self, text):
  37.         
  38.         try:
  39.             value = eval(text)
  40.             self.setfunction(value)
  41.         except:
  42.             pass
  43.  
  44.         self.object = value
  45.  
  46.     
  47.     def IsExpandable(self):
  48.         return not (not dir(self.object))
  49.  
  50.     
  51.     def GetSubList(self):
  52.         keys = dir(self.object)
  53.         sublist = []
  54.         for key in keys:
  55.             
  56.             try:
  57.                 value = getattr(self.object, key)
  58.             except AttributeError:
  59.                 continue
  60.  
  61.             item = make_objecttreeitem(str(key) + ' =', value, (lambda value, key = key, object = self.object: setattr(object, key, value)))
  62.             sublist.append(item)
  63.         
  64.         return sublist
  65.  
  66.  
  67.  
  68. class InstanceTreeItem(ObjectTreeItem):
  69.     
  70.     def IsExpandable(self):
  71.         return True
  72.  
  73.     
  74.     def GetSubList(self):
  75.         sublist = ObjectTreeItem.GetSubList(self)
  76.         sublist.insert(0, make_objecttreeitem('__class__ =', self.object.__class__))
  77.         return sublist
  78.  
  79.  
  80.  
  81. class ClassTreeItem(ObjectTreeItem):
  82.     
  83.     def IsExpandable(self):
  84.         return True
  85.  
  86.     
  87.     def GetSubList(self):
  88.         sublist = ObjectTreeItem.GetSubList(self)
  89.         if len(self.object.__bases__) == 1:
  90.             item = make_objecttreeitem('__bases__[0] =', self.object.__bases__[0])
  91.         else:
  92.             item = make_objecttreeitem('__bases__ =', self.object.__bases__)
  93.         sublist.insert(0, item)
  94.         return sublist
  95.  
  96.  
  97.  
  98. class AtomicObjectTreeItem(ObjectTreeItem):
  99.     
  100.     def IsExpandable(self):
  101.         return 0
  102.  
  103.  
  104.  
  105. class SequenceTreeItem(ObjectTreeItem):
  106.     
  107.     def IsExpandable(self):
  108.         return len(self.object) > 0
  109.  
  110.     
  111.     def keys(self):
  112.         return range(len(self.object))
  113.  
  114.     
  115.     def GetSubList(self):
  116.         sublist = []
  117.         for key in self.keys():
  118.             
  119.             try:
  120.                 value = self.object[key]
  121.             except KeyError:
  122.                 continue
  123.  
  124.             
  125.             def setfunction(value, key = key, object = self.object):
  126.                 object[key] = value
  127.  
  128.             item = make_objecttreeitem('%r:' % (key,), value, setfunction)
  129.             sublist.append(item)
  130.         
  131.         return sublist
  132.  
  133.  
  134.  
  135. class DictTreeItem(SequenceTreeItem):
  136.     
  137.     def keys(self):
  138.         keys = self.object.keys()
  139.         
  140.         try:
  141.             keys.sort()
  142.         except:
  143.             pass
  144.  
  145.         return keys
  146.  
  147.  
  148. from types import *
  149. dispatch = {
  150.     IntType: AtomicObjectTreeItem,
  151.     LongType: AtomicObjectTreeItem,
  152.     FloatType: AtomicObjectTreeItem,
  153.     StringType: AtomicObjectTreeItem,
  154.     TupleType: SequenceTreeItem,
  155.     ListType: SequenceTreeItem,
  156.     DictType: DictTreeItem,
  157.     InstanceType: InstanceTreeItem,
  158.     ClassType: ClassTreeItem }
  159.  
  160. def make_objecttreeitem(labeltext, object, setfunction = None):
  161.     t = type(object)
  162.     if dispatch.has_key(t):
  163.         c = dispatch[t]
  164.     else:
  165.         c = ObjectTreeItem
  166.     return c(labeltext, object, setfunction)
  167.  
  168.  
  169. def _test():
  170.     import sys
  171.     Tk = Tk
  172.     import Tkinter
  173.     root = Tk()
  174.     root.configure(bd = 0, bg = 'yellow')
  175.     root.focus_set()
  176.     sc = ScrolledCanvas(root, bg = 'white', highlightthickness = 0, takefocus = 1)
  177.     sc.frame.pack(expand = 1, fill = 'both')
  178.     item = make_objecttreeitem('sys', sys)
  179.     node = TreeNode(sc.canvas, None, item)
  180.     node.update()
  181.     root.mainloop()
  182.  
  183. if __name__ == '__main__':
  184.     _test()
  185.  
  186.